- "Any visualization of high dimensional data has to be compressed in some way, but interactivity allows us to get details" (Karl Broman, JSM 2015).
- Famous InfoVis mantra: Overview first, zoom and filter, then details on demand (Schneiderman, 1996).
August 22nd, 2015
library(ggplot2) p <- ggplot(data = iris) + geom_point(aes(x = Sepal.Width, y = Sepal.Length, color = Species)) p
library(animint) animint2dir(list(plot = p))
library(plotly) ggplotly(p)
ggplot2's grammar of graphicsanimint's extensiondata(tips, package = "reshape2")
tips$sex_smoker <- with(tips, interaction(sex, smoker))
library(animint)
p1 <- ggplot() + theme(legend.position = "none") +
geom_point(data = tips, position = "jitter",
aes(x = sex, y = smoker, colour = sex_smoker,
clickSelects = sex_smoker))
p2 <- ggplot() +
geom_point(data = tips,
aes(x = total_bill, y = tip, colour = sex_smoker,
showSelected = sex_smoker))
plots <- list(
plot1 = p1,
plot2 = p2
)
animint2dir(plots)
clickSelects+showSelected buy us?clickSelects+showSelected specifies a link between m and n observations.hoverSelects).tooltip aesthetic for labelling.time option for automatic iteration and interpolation between views (in other words, animation).Behold, the HTML file for all of these animint plots!!!
<html>
<head>
<script type="text/javascript" src="animint.js"></script>
</head>
<body>
<div id="plot" align="center"> </div>
<script>
var plot = new animint("#plot","plot.json");
</script>
</body>
</html>
library(RSelenium)
startServer()
remDr <- remoteDriver(browserName = "firefox")
remDr$open()
remDr$navigate("http://www.r-project.org")
# returns the DOM as HTML
src <- remDr$getPageSource()
src <- rdom::rdom("http://www.r-project.org")
myWrapper <- function(...) {
# compute stuff
toJSON(list(...))
}
library(plotly) (p <- plot_ly(z = volcano, type = "surface"))
str(p) #> Classes ‘plotly’ and 'data.frame': 0 obs. of 0 variables #> - attr(*, "plotly_hash")= chr "d72417c2f38125f11112cd6591f06f2e#2" str(plotly_build(p)) #> List of 4 #> $ data :List of 1 #> ..$ :List of 3 #> .. ..$ type : chr "surface" #> .. ..$ z : num [1:87, 1:61] 100 101 102 103 104 105 105 106 107 108 ... #> .. ..$ colorscale:'data.frame': 10 obs. of 2 variables: #> .. .. ..$ : num [1:10] 0 0.111 0.222 0.333 0.444 ... #> .. .. ..$ : Factor w/ 10 levels "#1F9D89","#26838E",..: 6 7 5 3 2 1 4 8 9 10 #> $ layout :List of 1 #> ..$ zaxis:List of 1 #> .. ..$ title: chr "volcano"
plot_ly(economics, x = date, y = uempmed, mode = "markers") %>%
add_trace(y = fitted(forecast::Arima(uempmed, c(1,0,0))), mode = "lines") %>%
dplyr::filter(uempmed == max(uempmed)) %>%
layout(annotations = list(x = date, y = uempmed, text = "Peak", showarrow = T),
title = "Median duration of unemployment (in weeks)", showlegend = F)
animint (Toby Dylan Hocking, Susan VanderPlas, Kevin Ferris, and Tony Tsai)
plotly (Toby Dylan Hocking, Chris Parmer, Plotly Team, and ropensci)
LDAvis (Kenny Shirley)